#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Modulos 
import sys, gtk, pygame, utils, objetos, math
from pygame.locals import *

# Constantes

# Clases
# ---------------------------------------------------------------------

class ObjetoGrafico(pygame.sprite.Sprite):
	def __init__(self, path, posInicialx, posInicialy, posFinalx, posFinaly):
		self.image = utils.load_image(path, True)
		self.rect = self.image.get_rect()

		self.rect.centerx = posInicialx
		self.rect.centery = posInicialy
		self.posInicialx = posInicialx
		self.posInicialy = posInicialy
		self.posFinalx = posFinalx
		self.posFinaly = posFinaly
		self.estado_x = 'INICIAL'
		self.estado_y = 'INICIAL'
		if posFinalx > posInicialx :
		        self.vx = 3
		else:
			self.vx = -3

		if posFinaly > posInicialy :
		        self.vy = 3
		else:
			self.vy = -3

	def cambiarEstado(self, screen):
		if (self.estado >= 3):
			self.estado = 1
		else:
			self.estado = self.estado + 1

	def match(self):
		x, y = pygame.mouse.get_pos()
		if abs(self.rect.centerx - x) < 90  and abs(self.rect.centery - y) < 90 :
			return True
		else:
			return False

	def mover(self):
		if self.estado_x == 'INICIAL':
			if self.vx and self.rect.centerx < self.posFinalx:
				self.rect.centerx = self.rect.centerx + self.vx
			elif self.vy and self.rect.centerx < self.posFinalx:
				self.rect.centerx = self.rect.centerx + self.vx
			else:
				self.estado_x = 'FINAL'


		if self.estado_y == 'INICIAL':
			if self.vy < 0 and self.rect.centery > self.posFinaly:
				self.rect.centery = self.rect.centery + self.vy

			elif self.vy > 0 and self.rect.centery > self.posFinaly:
				self.rect.centery = self.rect.centery + self.vy
			else:
				self.estado_y = 'FINAL'

# ---------------------------------------------------------------------
	
def dibujar(screen,cursor_picture, clock):
    salir = 0
    background_image = utils.load_image('images/fondo2.png')

    #boton de la flecha para continuar
    btn_adelante = objetos.BotonAdelante()
    btn_atras = objetos.BotonAtras()

    #texto superior derecho que indica el numero de clase
    clase2, clase2_rect = utils.texto_clase("Clase 5", 750*utils.RES, 15*utils.RES)
    titulo1, titulo1_rect = utils.textodream("4) LAS SOLUCIONES "    ,    	130*utils.RES, 40*utils.RES, 24, color=(50, 50, 255))
    titulo2, titulo2_rect = utils.textodream("............................",   	130*utils.RES, 55*utils.RES, 24, color=(50, 50, 255))    

    
    libro = ObjetoGrafico('images/check.png', 100*utils.RES, 500*utils.RES,  240*utils.RES, 50*utils.RES )
    hazclick, hazclick_rect = utils.textotls("Haz click",   	290*utils.RES, 50*utils.RES, 22, color=(0, 0, 0))    


    bt1 = utils.BloqueTexto(22)
    bt1.agregarParrafo('''Este es el momento de poner a prueba la creatividad y pensar de qué maneras se puede ayudar y proponer mejoras a los problemas que detectaron.''', 
	75, 380, 120 )
    bt1.agregarParrafo('''Pueden planificar acciones en la comunidad educativa o realizar producciones o actividades que sirvan para que otros chicos y adultos aprendan sobre cómo conservar el medio ambiente.''', 
	75, 380, 200 )
    bt1.agregarParrafo('''Recuerden que el Jurado evaluará aquellas que demuestren ser beneficiosas para la situación ambiental, que puedan llevarlas a cabo y que además sean ¡bien originales!''', 
	75, 380, 330 )

    bt1l, bt1lrect = bt1.obtener_gui(False)

    cant_clicks = 0
    while salir == 0:
    
    	# Pump GTK messages.
		while gtk.events_pending():
			gtk.main_iteration()
			
		for eventos in pygame.event.get():
			if eventos.type == QUIT:
				sys.exit(0)
			elif eventos.type == pygame.VIDEORESIZE:
			   pygame.display.set_mode(eventos.size, pygame.RESIZABLE)	
			elif eventos.type == MOUSEBUTTONDOWN:
				mx, my = pygame.mouse.get_pos()
				cant_clicks = cant_clicks + 1
				if btn_adelante.rect.collidepoint(mx, my):
					salir = 9
					btn_adelante.sonido.play()	
				elif btn_atras.rect.collidepoint(mx, my):
					salir = 7
					btn_atras.sonido.play()	
					

		# Si se esta moviendo no se consideran los clicks
		if libro.estado_x == 'INICIAL' or libro.estado_y == 'INICIAL' :
			cant_clicks = 0
			libro.mover()


		# Realiza la animacion del texto	
		screen.blit(background_image, (0, 0))
		screen.blit(clase2, clase2_rect)
		screen.blit(titulo1, titulo1_rect)
		screen.blit(titulo2, titulo2_rect)

		if libro.estado_x == 'FINAL' and libro.estado_y == 'FINAL' :
			screen.blit(hazclick, hazclick_rect)

		if cant_clicks == 1:
			salir = 0
			# Parrafos multinea
			for nl in range (0,2):
				screen.blit(bt1l[nl], bt1lrect[nl])

		elif cant_clicks == 2 :
			# Parrafos multinea
			for nl in range (0,5):
				screen.blit(bt1l[nl], bt1lrect[nl])

		elif cant_clicks >= 3 :
			# Parrafos multinea
			for nl in range (0,len(bt1l)):
				screen.blit(bt1l[nl], bt1lrect[nl])

		screen.blit(libro.image, libro.rect)	

		screen.blit(btn_adelante.image, btn_adelante.rect)
		screen.blit(btn_atras.image, btn_atras.rect)
		screen.blit(cursor_picture, pygame.mouse.get_pos())
		pygame.display.flip()

		# Try to stay at 30 FPS
		clock.tick(30)

    return salir


# This function is called when the game is run directly from the command line:
# ./TestGame.py 
def main():
	
	pygame.init()
	screen = pygame.display.set_mode((int(800*utils.RES), int(520*utils.RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()
	dibujar(screen,cursor_picture,clock)
 
if __name__ == '__main__':
   main()
